1. Technical Field
The present invention relates in general to a method and system for data processing and, in particular, to a method and system for data filtering within a data processing system. Still more particularly, the present invention relates to a data processing system and method for filtering an input sequence based upon a selected policy utilizing a filter object within an object-oriented environment.
2. Description of the Related Art
The development of application and system software for data processing systems has traditionally been a time-consuming and somewhat repetitive task, with software developers often having to write or rewrite code to perform well-known user interface and system functions in addition to writing the code utilized to implement the desired new functionality. Recently, object-oriented programming (OOP) has emerged as a dominant new programming paradigm that enables the rapid development and implementation of functionality while permitting the customization and reuse of objects.
The power of OOP as a software development philosophy is realized chiefly through object frameworks, which provide a collection of base object classes that can be selectively utilized by a system developer to create a software system, much like a hardware developer might construct a desktop computer from standard hardware components. Object frameworks are particularly advantageous when utilized within a distributed computing environment in which multiple, possibly heterogeneous, computer systems are interconnected to allow system hardware and software resources to be shared between computer systems. In order to permit programs written in multiple diverse languages to utilize object classes defined within a single object framework, it is necessary to develop a minimum level of object standardization, thereby enabling, at least to some degree, the interoperability of object-oriented software. One organization that is working to establish industry guidelines and object management specifications to provide a common object framework for applicaton development is the Object Management Group (OMG). The specifications promulgated by OMG enable the reusability, portability, and interoperability of object-based software in distributed heterogeneous computing environments (HDCE). An example of a commercially available object framework that conforms to OMG specifications is the Distributed System Object Model (DSOM), which is described, for example, in the SOM Objects Toolkit version 3.0 Programmer's Guide, Volume 1: SOM and DSOM, available from International Business Machines Corporation.
The Object Management Group (OMG) defines an industry standard for Life Cycle Services in CORBAservices: Common Object Services Specification, OMG Document No. 95-3-31. Within the OMG Life Cycle Services standard, a number of object-oriented programming interfaces are defined in support of the creation and destruction of objects within a heterogeneous distributed computing environment (HDCE). Among the interfaces introduced within the OMG Life Cycle Services standard is the FactoryFinder interface, which provides a standard service that can be utilized by applications to locate a Factory object (i.e., an object that creates other objects) within the heterogeneous distributed computing environment (HDCE).
The OMG FactoryFinder interface introduces an operation called find_factories, which returns an Interface Definition Language (IDL) sequence of Factory objects that satisfy input criteria specified within a factory_key input parameter. In heterogeneous distributed data processing systems that contains hundreds or thousands of objects, of which many may satisfy a particular factory_key, the number of Factory objects returned in the sequence can be large. Consequently, the user may desire to reduce the number of objects returned by the FactoryFinder on the basis of an additional static policy, such as a specific server on which the Factory objects reside. In addition, the user may desire to limit the number of Factory objects returned in the FactoryFinder search on the basis of a dynamic policy, for example, the CPU usage of the servers on which the Factory objects reside.
Although additional filtering of IDL sequences returned by OMG FactoryFinder objects is highly desirable, the OMG specifications do not define a standard interface which enables a user to reduce the number of Factory objects remaining within the sequence. Although additional policies may be encapsulated within a FactoryFinder object, each of these additional policies would require a unique implementation of FactoryFinder. In addition, a unique FactoryFinder implementation would be required to combine multiple policies within a single FactofyFinder. Consequently, it would be desirable to provide an interface capable of filtering input sequences based upon a selected policy, and more particularly, an interface compatible with the OMG FactoryFinder interface that filters IDL sequences generated by a FactoryFinder based upon a user-selected dynamic policy. It is also desirable to be able to associate one or more filtering objects with a FactoryFinder object so that any combination of policies can be supported by a single FactoryFinder implementation.